<!DOCTYPE html>
<html lang="">

<head>
	<meta name="generator" content="Hugo 0.73.0" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="Ap Chen ">
<meta name="description" content="2. - 进程管理 总领：OS是人类设计和实现的最大最繁琐的软件之一，它抽象于冯·诺伊曼计算机模型并对其实现自动化管理。其中处理器是模型中最核心的部" />
<meta name="keywords" content="blog" />
<meta name="robots" content="noodp" />

<link rel="canonical" href="https://fziks.gitee.io/notes/operating-system/process-management/" />

<meta itemprop="name" content="Process Management">
<meta itemprop="description" content="2. - 进程管理 总领：OS是人类设计和实现的最大最繁琐的软件之一，它抽象于冯·诺伊曼计算机模型并对其实现自动化管理。其中处理器是模型中最核心的部">
<meta itemprop="datePublished" content="2020-04-30T00:00:00&#43;00:00" />
<meta itemprop="dateModified" content="2020-04-30T00:00:00&#43;00:00" />
<meta itemprop="wordCount" content="2418">



<meta itemprop="keywords" content="os,notes," />
<meta property="og:title" content="Process Management" />
<meta property="og:description" content="2. - 进程管理 总领：OS是人类设计和实现的最大最繁琐的软件之一，它抽象于冯·诺伊曼计算机模型并对其实现自动化管理。其中处理器是模型中最核心的部" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://fziks.gitee.io/notes/operating-system/process-management/" />
<meta property="article:published_time" content="2020-04-30T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-30T00:00:00+00:00" />

<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Process Management"/>
<meta name="twitter:description" content="2. - 进程管理 总领：OS是人类设计和实现的最大最繁琐的软件之一，它抽象于冯·诺伊曼计算机模型并对其实现自动化管理。其中处理器是模型中最核心的部"/>


<link rel="apple-touch-icon" sizes="60x60" href="https://fziks.gitee.io/icons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://fziks.gitee.io/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://fziks.gitee.io/icons/favicon-16x16.png">
<link rel="manifest" href="https://fziks.gitee.io/icons/site.webmanifest">
<link rel="mask-icon" href="https://fziks.gitee.io/icons/safari-pinned-tab.svg" color="#5bbad5">
<link rel="shortcut icon" href="https://fziks.gitee.io/icons/favicon.ico">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-config" content="/icons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">

<title>Process Management</title>


<link rel="stylesheet" href="//at.alicdn.com/t/font_1559566_wk214kwa2dn.css">


    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">



    
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css" integrity="sha256-WAgYcAck1C1/zEl5sBl5cfyhxtLgKGdpI3oKyJffVRI=" crossorigin="anonymous" />
    
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.2/animate.css" integrity="sha256-a2tobsqlbgLsWs7ZVUGgP5IvWZsx8bTNQpzsqCSm5mk=" crossorigin="anonymous" />
    
   <link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/materia/bootstrap.min.css" rel="stylesheet" integrity="sha384-1tymk6x9Y5K+OF0tlmG2fDRcn67QGzBkiM3IgtJ3VrtGrIi5ryhHjKjeeS60f1FA" crossorigin="anonymous">
    
    
    <link rel="stylesheet" href="https://fziks.gitee.io/sass/main_cdn.min.270b43bb8631af4497ed45b90db42c517e86c9511418de9152f134d02ed32b87.min.2192baea245cf318085511589e62bfbdb3fbe4fb0eef718f1be9af91c10542ce.css" integity="sha256-IZK66iRc8xgIVRFYnmK/vbP75PsO73GPG&#43;mvkcEFQs4=">

</head>

<body style="overflow-x: unset;">
	<div class="container-fluid">
		<div class="row d-print-block">
			<div class="col-12 col-md-3 col-lg-2 bd-sidebar d-print-none">
				<div class="d-flex mt-3 border-bottom">
        <span class="navbar-brand w-100" style="display: grid;">
            <small>
                <a href="https://fziks.gitee.io/" class="text-black-50">
                    <i class="iconfont icon-back-arrow-"></i>
                </a>
                Ap Chen's
            </small>
            <a class="text-dark" href="https://fziks.gitee.io/notes/">
                Notes
            </a>
        </span>
        <button class="btn btn-link text-dark d-md-none p-0 ml-3" type="button" data-toggle="collapse"
            data-target="#bd-docs-nav" aria-controls="bd-docs-nav" aria-expanded="true"
            aria-label="Toggle docs navigation">
            <i class="fad fa-bars"></i>
        </button>
    </div>
				<nav id="bd-docs-nav" class="collapse bd-links">
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/computer-network/">
            
            
                <span class="icontext">S</span>
            
            
            计算机网络
        </a>
    </div>
    
    
    
    <div class="bd-toc-item active bg-light">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/operating-system/">
            <i class="iconfont icon-back-arrow-reverse"></i>
            操作系统
        </a>
        <ul class="nav bd-sidenav">
            
            
            <li class="active">
                <a href="https://fziks.gitee.io/notes/operating-system/process-management/">
                    <i class="fad fa-chevron-right mr-1"></i>
                    Process Management
                </a>
            </li>
            
            
            
            <li>
                <a href="https://fziks.gitee.io/notes/operating-system/osc-chapt.5/">OSC Chapt.5</a>
            </li>
            
            
            
            <li>
                <a href="https://fziks.gitee.io/notes/operating-system/os-persistance/">Persistance</a>
            </li>
            
            
        </ul>
    </div>
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/database/">
            
            
                <span class="icontext">S</span>
            
            
            数据库
        </a>
    </div>
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/cs50-introduction-to-computer-science/">
            
            
                <span class="icontext">S</span>
            
            
            CS50 MIT
        </a>
    </div>
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/advanced-programming/">
            
            
                <span class="icontext">A</span>
            
            
            高级程序设计
        </a>
    </div>
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/deep-learning/">
            
            
                <span class="icontext">O</span>
            
            
            深度学习基础
        </a>
    </div>
    
    
    
    <div class="bd-toc-item">
        <a class="bd-toc-link" href="https://fziks.gitee.io/notes/%E6%96%87%E7%8C%AE%E7%AE%A1%E7%90%86%E4%B8%8E%E4%BF%A1%E6%81%AF%E5%88%86%E6%9E%90/">
            
            
                <span class="icontext">O</span>
            
            
            文献管理与信息分析
        </a>
    </div>
    
    
</nav>
			</div>
			<div class="col-12 col-md-9 col-lg-10 d-print-block">
				<div class="row d-print-block">
					<main class="col-12 col-md-10 col-lg-9 py-md-3 pl-md-5 bd-content d-print-block" role="main">
						<div id="title" class="my-4 border-bottom">
							<span>操作系统</span>
							<h2>Process Management</h2>
							<footer>
								<span>
									<i class="iconfont icon-NewFile mr-2"></i>
									2020-04-30 08:00 CST
								</span> <br />
								<span>
									<i class="iconfont icon-modify mr-2"></i>
									2020-04-30 08:00 CST
								</span> <br />
								<span>
									<i class="iconfont icon-copyright mr-2"></i>
									CC BY-NC 4.0
								</span>
							</footer>
						</div>
						<div id="content" class="hl-h2">
							
							
							
							
							
							
							
							
							
							
							
							
							<h1 id="2-----进程管理">2.  -  进程管理<a href="#2-----进程管理" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h1>
<p>总领：OS是人类设计和实现的最大最繁琐的软件之一，它抽象于<strong>冯·诺伊曼</strong>计算机模型并对其实现自动化<strong>管理</strong>。其中处理器是模型中最核心的部分，而处理器管理的单位称为<strong>进程</strong>，为进一步提升资源利用率则<strong>多道程序设计</strong>应运而生。</p>
<h2 id="21处理器方面软硬件">2.1处理器方面（软硬件）<a href="#21处理器方面软硬件" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<p><img src="https://fziks.gitee.io/images/content/os/20190907151826645.png" alt=""></p>
<h4 id="211指令系统特权非特权">2.1.1指令系统（特权、非特权）<a href="#211指令系统特权非特权" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h4 id="212存储">2.1.2存储<a href="#212存储" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<p>寄存器、用户栈与核心栈</p>
<h4 id="213处理器状态">2.1.3处理器状态<a href="#213处理器状态" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>内核态、用户态</li>
<li>区别在于：是否被允许运行特权指令（安全）</li>
</ul>
<h4 id="214程序状态字psw">2.1.4程序状态字（PSW）<a href="#214程序状态字psw" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>实现程序状态的<strong>保护</strong>和<strong>恢复</strong></li>
</ul>
<h2 id="22中断系统">2.2中断系统<a href="#22中断系统" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<p>是激活OS的唯一方式，是软硬件协作的典范。</p>
<h4 id="221中断分类">2.2.1中断分类<a href="#221中断分类" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>硬中断、软中断</li>
<li>软中断：中断（处理器外中断）、异常（处理器内中断）</li>
<li>区别在于：1.产生方式 2.同异步 3.cpu状态 4.主被动 5.阻塞与否、嵌套可否</li>
</ul>
<h4 id="222步骤响应">2.2.2步骤响应<a href="#222步骤响应" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h4 id="223处理原则">2.2.3处理原则<a href="#223处理原则" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h4 id="224优先级与多重中断">2.2.4优先级与多重中断<a href="#224优先级与多重中断" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h2 id="23进程">2.3进程<a href="#23进程" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<p>PCB+数据+代码。顺序程序设计4特点、进程5特点属性</p>
<p><img src="https://fziks.gitee.io/images/content/os/image-20200621202723740.png" alt=""></p>
<h4 id="231状态与转换">2.3.1状态与转换<a href="#231状态与转换" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>三态模型、七态模型</li>
</ul>
<p>（按照运行条件、拥有CPU）
<img src="https://fziks.gitee.io/images/content/os/image-20200621222733258.png" alt=""></p>
<h4 id="232描述与组成">2.3.2描述与组成<a href="#232描述与组成" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h5 id="process-image-动态刻画">Process Image 动态刻画<a href="#process-image-动态刻画" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<ul>
<li>进程控制块、程序块、核心块、数据块</li>
</ul>
<h5 id="process-context-静态刻画环境">Process Context 静态刻画（环境）<a href="#process-context-静态刻画环境" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<ul>
<li>用户级上下文、寄存器、系统级</li>
</ul>
<h5 id="pcb">PCB<a href="#pcb" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<ul>
<li>标识信息、现场、控制</li>
<li>两种组织方式：链接、索引</li>
</ul>
<p><img src="https://fziks.gitee.io/images/content/os/image-20200621202831277.png" alt=""></p>
<p><img src="https://fziks.gitee.io/images/content/os/image-20200621222950478.png" alt=""></p>
<h5 id="进程各状态的实现">进程各状态的实现<a href="#进程各状态的实现" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<h4 id="233进程控制">2.3.3进程控制<a href="#233进程控制" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h5 id="进程控制原语">进程控制原语<a href="#进程控制原语" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<ul>
<li>创建、阻塞、撤销、挂起、激活</li>
</ul>
<h2 id="24线程">2.4线程<a href="#24线程" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<ul>
<li>引入线程的意义及优点（轻量级进程）</li>
<li>公有、私有部分</li>
<li>实现：KLT、ULT、混合式</li>
<li>模型：一对多模型、多对一、多对多</li>
</ul>
<h2 id="25处理器调度">2.5处理器调度<a href="#25处理器调度" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<h4 id="251分层">2.5.1分层<a href="#251分层" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>高级调度（作业调度，控制多道proc的道数）、中级调度（平衡调度，控制内存容纳进程数）、低级调度（进程/线程调度，决定CPU的分配）</li>
</ul>
<h4 id="252原则背计算公式">2.5.2原则（背计算公式）<a href="#252原则背计算公式" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>资源利用率、吞吐率、公平性（均衡）、响应时间、周转时间（等待+运行）、等待时间</li>
<li><img src="https://fziks.gitee.io/images/content/os/20190808150452263.png" alt="在这里插入图片描述"></li>
</ul>
<h4 id="253作业管理与调度">2.5.3作业管理与调度<a href="#253作业管理与调度" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>作业是<strong>程序、数据、作业说明书</strong>构成，JCB</li>
<li>交互型作业（终端作业）、批处理作业</li>
<li>SPOOLing系统 输入井、输出井</li>
<li>脱机、联机</li>
</ul>
<h2 id="26作业调度和低级调度算法">2.6作业调度和低级调度算法<a href="#26作业调度和低级调度算法" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<ul>
<li>这类调度算法分别仅适用于job或process，但大部分同时适用</li>
<li>剥夺式（抢占，通常内核关键进程/线程用）、非剥夺式（非抢占，通常用户进程/线程用）</li>
<li>剥夺指原在一运行的进程/线程的处理器被移向其它进程/线程：1.高低优先级 2.时间片耗尽</li>
<li>算法主要影响作业周转时间，等待时间</li>
</ul>
<h4 id="fcfs">FCFS<a href="#fcfs" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>按照进入系统先后顺序来挑选作业</li>
<li>非抢占式算法</li>
<li>公平性算法</li>
<li>易于实现，效率不高</li>
</ul>
<h4 id="sjfspf">SJF/SPF<a href="#sjfspf" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>每次挑选最短运行时间的作业，其中SJF仅用于作业（高级）调度，SPF仅用于低级调度</li>
<li>非抢占式</li>
<li>优待短作业，长作业易饥饿</li>
<li>效率较高</li>
</ul>
<h4 id="srtf">SRTF<a href="#srtf" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>每次挑选最短剩余时间的作业</li>
<li>抢占式</li>
</ul>
<h4 id="hrrf">HRRF<a href="#hrrf" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>每次选最高响应比的作业</li>
<li>非抢占式</li>
<li>等待时间相同，运行时间短的作业优先；运行时间相同，等待时间长的优先</li>
<li>效率介于SJF与FCFS之间</li>
</ul>
<h4 id="hpf">HPF<a href="#hpf" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>
<p>根据当前进程的优先级来选择  ，优先级：进程的一种调度属性</p>
</li>
<li>
<p>静态优先级：在进程创建时确定，之后不再改变</p>
</li>
<li>
<p>动态优先级：随着占用CPU的时间而改变</p>
</li>
<li>
<p>剥夺或非剥夺</p>
</li>
</ul>
<h4 id="rr">RR<a href="#rr" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>
<p>规定每个进程运行的时间片，按照某种顺序（FCFS）轮流调度执行</p>
</li>
<li>
<p>剥夺式</p>
</li>
<li>
<p>时间片长度的确定策略</p>
</li>
</ul>
<h4 id="mlfq">MLFQ<a href="#mlfq" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>优先级不同分多就绪队列</li>
<li>排队参考反向的老化策略</li>
</ul>
<h4 id="解题思路">解题思路<a href="#解题思路" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>公式</li>
<li>画图：并发执行运行轨迹画法、甘特图</li>
</ul>
<h2 id="27例题">2.7例题<a href="#27例题" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<ol>
<li>进程是在多程序并行环境中的完整的程序 ( x )</li>
<li>实时操作系统中通常采用剥夺式调度方式  (√ )</li>
<li>现代操作系统通常采用进程调度与线程调度相结合来完成多处理机调度 (√)</li>
<li>为实现SPOOLing技术，硬件必须提供输入/输出 (x)</li>
<li>用户通过终端使用计算机系统控制作业执行的方式称为 <!-- raw HTML omitted -->联机<!-- raw HTML omitted --> 方式</li>
<li></li>
</ol>
<hr>
<h1 id="同步通讯与死锁">同步、通讯与死锁<a href="#同步通讯与死锁" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h1>
<h2 id="进程交互">进程交互<a href="#进程交互" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<ul>
<li>同步（竞争、协助）、通讯</li>
<li>竞争（进程互斥）：死锁、饥饿； 协助（进程同步）： 间接协助、松散、紧密</li>
<li>进程互斥关系是一种特殊的进程同步关系</li>
<li>并发实质：处理器在几个程序间<strong>多路复用</strong></li>
<li>Bernstein条件：满足公式为交集则保证封闭性、可再现性， P125</li>
<li>Amdahl定律：可并行和顺序的比例对性能影响的公式</li>
</ul>
<h4 id="临界区">临界区<a href="#临界区" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>并发进程中与共享变量有关的程序段称为临界区，临界资源是每次仅供一个进程使用的。</li>
<li>临界区互斥三原则：<!-- raw HTML omitted -->互斥使用<!-- raw HTML omitted -->、<!-- raw HTML omitted -->忙则等待<!-- raw HTML omitted -->、<!-- raw HTML omitted -->有限等待、让权等待<!-- raw HTML omitted --></li>
</ul>
<h2 id="同步">同步<a href="#同步" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<h4 id="忙式等待策略软硬件">忙式等待策略（软硬件）<a href="#忙式等待策略软硬件" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<h5 id="1关中断">1.关中断<a href="#1关中断" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<h5 id="2-测试并设置指令">2. 测试并设置指令<a href="#2-测试并设置指令" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<h5 id="3对换指令">3.对换指令<a href="#3对换指令" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<h5 id="忙式等待缺陷">忙式等待缺陷<a href="#忙式等待缺陷" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h5>
<ul>
<li>忙等待，浪费cpu时间</li>
<li>依赖os具体指令</li>
<li>只能互斥，不适合控制多进程同时进入临界区</li>
</ul>
<h4 id="信号量和pv操作">信号量和PV操作<a href="#信号量和pv操作" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>P、V操作原语</li>
<li>用法和可解决的问题</li>
<li>信号量 按用途分： <!-- raw HTML omitted -->公有<!-- raw HTML omitted -->、<!-- raw HTML omitted -->私有<!-- raw HTML omitted -->；按取值分 <!-- raw HTML omitted -->二值<!-- raw HTML omitted -->、<!-- raw HTML omitted -->一般<!-- raw HTML omitted --></li>
<li>信号量值的意义（等于、小于0、小于等于0）</li>
<li>PV成对出现，P操作次序最为重要</li>
</ul>
<h4 id="管程">管程<a href="#管程" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>是一种记录型信号量，相比PV信号量是一个整体的数据结构，与类方法不同的是只被互斥调用</li>
<li>signal() wait()，可在高级语言实现</li>
<li>分为工作区和等待区</li>
</ul>
<h2 id="ipc">IPC<a href="#ipc" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<h4 id="信号通讯">信号通讯<a href="#信号通讯" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>When：传简单信息</li>
<li>What：发指定（预定义）的信号来通知另一个进程，接受方根据信号类型执行处理</li>
<li>How：产生、传递、捕获、释放</li>
</ul>
<h4 id="管道通信">管道通信<a href="#管道通信" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>
<p>When：同一台PC传大量数据</p>
</li>
<li>
<p>What：单向FIFO，Unix OS特有的进程间通信方式</p>
</li>
<li>
<p>How：临时-&gt; 创建、打开、关闭、读写</p>
<p>​		   有名管道-&gt; FIFO通信机制，以文件形式存于FS，可直接用，用时读写</p>
</li>
</ul>
<h4 id="共享内存">共享内存<a href="#共享内存" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>When：同一台PC传大量数据</li>
<li>What：多进程共有shared memory，所有进程都可以读写该区</li>
<li>How：虚拟存储实现</li>
</ul>
<h4 id="消息传递">消息传递<a href="#消息传递" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>
<p>When&amp;What：不同进程（甚至不同主机上的不同进程）间传递大量数据</p>
</li>
<li>
<p>How：消息队列方式实现。两原语 send() 、receive()  皆有阻塞（同步）or非阻塞（异步）方式</p>
</li>
</ul>
<h2 id="死锁">死锁<a href="#死锁" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<h3 id="死锁四大条件">死锁四大条件<a href="#死锁四大条件" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h3>
<ul>
<li>互斥、占用和等待、不剥夺、循环等待</li>
<li>一般不破坏互斥条件</li>
</ul>
<h3 id="死锁控制">死锁控制<a href="#死锁控制" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h3>
<p>（动静结合）</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-fallback" data-lang="fallback">事前 ———— 防止（预防）—— 规则(顺序资源分配法)
 |  |
 |	———— 避免  ———————— 银行家算法（不限制申请资源顺序，限制分配资源顺序）
 |
事后 ———— 检查与解除 ———— 死锁检查算法 or 资源分配图和死锁定理（找环的回路），恢复（kill P、剥夺资源、保存检查点、重启）
</code></pre></div><h4 id="思考">思考<a href="#思考" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>死锁与饿死</li>
<li>活锁与饥饿</li>
</ul>
<h2 id="经典同步问题">经典同步问题<a href="#经典同步问题" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h2>
<h4 id="哲学家吃面">哲学家吃面<a href="#哲学家吃面" class="anchor" aria-hidden="true"><i class="iconfont icon-link"></i></a></h4>
<ul>
<li>等叉子方案</li>
<li>等盘子方案</li>
</ul>

						</div>
					</main>
					<div class="d-none d-lg-block col-lg-3 bd-toc d-print-none">
						<div class="btn-group-vertical w-100 my-3">
    
    <a class="btn btn-outline-secondary text-dark w-100 p-2" href="https://list.html" target="_blank">
        <i class="iconfont icon-LC_icon_list_line"></i><br />待更新列表
    </a>
    

    
    <a class="btn btn-outline-secondary text-dark w-100 p-2" href="mailto:littlegreedy@qq.com"
        target="_blank">
        <i class="iconfont icon-discussion"></i><br />纠错与咨询
    </a>
    
    
    
    
        <a class="btn btn-outline-secondary text-dark w-100 p-2" href="#" onclick="window.print()">
            <i class="iconfont icon-dayin"></i><br />打印本页
        </a>
    
    
</div>
						<h4 class="card-title pb-0">目录</h4>
						<nav id="TableOfContents">
  <ul>
    <li><a href="#21处理器方面软硬件">2.1处理器方面（软硬件）</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#22中断系统">2.2中断系统</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#23进程">2.3进程</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#24线程">2.4线程</a></li>
    <li><a href="#25处理器调度">2.5处理器调度</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#26作业调度和低级调度算法">2.6作业调度和低级调度算法</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#27例题">2.7例题</a></li>
  </ul>

  <ul>
    <li><a href="#进程交互">进程交互</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#同步">同步</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#ipc">IPC</a>
      <ul>
        <li></li>
      </ul>
    </li>
    <li><a href="#死锁">死锁</a>
      <ul>
        <li><a href="#死锁四大条件">死锁四大条件</a></li>
        <li><a href="#死锁控制">死锁控制</a></li>
      </ul>
    </li>
    <li><a href="#经典同步问题">经典同步问题</a>
      <ul>
        <li></li>
      </ul>
    </li>
  </ul>
</nav>
						
						
						<div id="disqus_thread"></div>
							<script>
							

							

							(function() { 
							var d = document, s = d.createElement('script');
							s.src = "https://"+"your site name on disqus"+".disqus.com/embed.js";
							s.setAttribute('data-timestamp', +new Date());
							(d.head || d.body).appendChild(s);
							})();
							</script>
							<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>                  
					  	</div>
						
					</div>
				</div>
			</div>
		</div>
	</div>

	<script
    src="https://code.jquery.com/jquery-3.4.1.min.js"
    integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
    crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>

<script type="text/javascript" src="https://fziks.gitee.io/custom.min.d3e1b7647f32dbe7e0140398739a26dad3f3470fc1eebe0741ef33668f1b7bd0b2917dc6efb9f0d9f1092b91dca502cab1b883863f02530133a8a8ef609926af.js" integrity="sha512-0&#43;G3ZH8y2&#43;fgFAOYc5om2tPzRw/B7r4HQe8zZo8be9CykX3G77nw2fEJK5HcpQLKsbiDhj8CUwEzqKjvYJkmrw=="></script>
<script type="text/javascript">

document.addEventListener("DOMContentLoaded", function () {
    renderMathInElement(
        document.body, {
            delimiters: [
                {
                    left: "$$",
                    right: "$$",
                    display: true
                },
                {
                    left: "\\[",
                    right: "\\]",
                    display: true
                },
                {
                    left: "$",
                    right: "$",
                    display: false
                },
                {
                    left: "\\(",
                    right: "\\)",
                    display: false
                }
            ],
            strict: false
        }
    );
});


$(document).on('click', 'a[href^="#"]', function (event) {
    event.preventDefault();

    $('html, body').animate({
        scrollTop: $($.attr(this, 'href')).offset().top
    }, 500);
});
</script>




</body>

</html>